import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    // 用户信息
    userInfo: {
      id: '',
      nickname: '',
      avatar: '',
      token: ''
    },
    // 车辆信息
    carInfo: {
      id: '',
      plateNumber: '',
      brand: ''
    },
    // 钱包信息
    walletInfo: {
      balance: 0,
      couponCount: 0
    },
    // 当前订单
    currentOrder: null
  },
  mutations: {
    // 设置用户信息
    SET_USER_INFO(state, userInfo) {
      state.userInfo = userInfo
    },
    // 设置车辆信息
    SET_CAR_INFO(state, carInfo) {
      state.carInfo = carInfo
    },
    // 设置钱包信息
    SET_WALLET_INFO(state, walletInfo) {
      state.walletInfo = walletInfo
    },
    // 设置当前订单
    SET_CURRENT_ORDER(state, order) {
      state.currentOrder = order
    }
  },
  actions: {
    // 更新用户信息
    updateUserInfo({ commit }, userInfo) {
      commit('SET_USER_INFO', userInfo)
    },
    // 更新车辆信息
    updateCarInfo({ commit }, carInfo) {
      commit('SET_CAR_INFO', carInfo)
    },
    // 更新钱包信息
    updateWalletInfo({ commit }, walletInfo) {
      commit('SET_WALLET_INFO', walletInfo)
    },
    // 更新当前订单
    updateCurrentOrder({ commit }, order) {
      commit('SET_CURRENT_ORDER', order)
    }
  },
  getters: {
    // 是否已登录
    isLogin: state => !!state.userInfo.token,
    // 用户昵称
    nickname: state => state.userInfo.nickname,
    // 车牌号
    plateNumber: state => state.carInfo.plateNumber,
    // 钱包余额
    balance: state => state.walletInfo.balance
  }
})

export default store